Skip to content

Remove dead get_market_positions and fix 0.5.0 ImportError cleanly#385

Merged
crthpl merged 1 commit intomainfrom
fix/metagame-remove-dead-market-positions
Apr 13, 2026
Merged

Remove dead get_market_positions and fix 0.5.0 ImportError cleanly#385
crthpl merged 1 commit intomainfrom
fix/metagame-remove-dead-market-positions

Conversation

@crthpl
Copy link
Copy Markdown
Contributor

@crthpl crthpl commented Apr 13, 2026

Summary

Supersedes #384. 0.5.0 crash-looped every metagame consumer because import metagame raised AttributeError on websocket_api.MarketPositions — a class that does not exist anywhere: not in the proto schema, not in the Rust backend, not in the generated websocket_api module. get_market_positions referenced two phantom messages (MarketPositions and GetMarketPositions) and could never have worked at runtime; it was only invisible because 0.4.x had from __future__ import annotations making the return type lazy.

0.5.1 plastered over the crash by re-adding the future import. That works, but it permanently hides similar dead references from ever being caught at import. Better fix: delete the dead method, keep annotations eager.

Positions are already streamed to clients via the Portfolio message on the normal ServerMessage channel, so nothing is lost by removing this method.

Bumps to 0.5.2.

Test plan

  • uv sync && uv run python -c "from metagame import TradingClient" succeeds
  • inspect.get_annotations(method, eval_str=True) resolves for every TradingClient method (no other dangling references)
  • uv build produces 0.5.2 artifacts
  • After release, bump metagame==0.5.2 in scenarios and confirm Fly smoke checks pass

`get_market_positions` referenced `websocket_api.MarketPositions` and
`websocket_api.GetMarketPositions`, neither of which exist in the proto
schema, the Rust backend, or the generated websocket_api module. The
method could never have worked — it was only invisible because 0.4.x
had `from __future__ import annotations` making the dangling return
type lazy. 0.5.0 dropped the future import, surfacing the bug at
`import metagame` time and crash-looping every consumer.

0.5.1 plastered over it by restoring `from __future__ import annotations`,
but that approach hides similar dead code from ever being caught.
Instead, delete the method (positions are already streamed via Portfolio
on the normal ServerMessage channel) and keep annotations eagerly
evaluated. Bumps to 0.5.2.
@crthpl crthpl requested a review from a team as a code owner April 13, 2026 22:06
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
platform Ready Ready Preview, Comment Apr 13, 2026 10:06pm

Request Review

@crthpl crthpl merged commit 685ee0c into main Apr 13, 2026
5 checks passed
briansmiley added a commit that referenced this pull request Apr 14, 2026
Reverts commits 7cd390c..c5f4008 (15 commits) to restore the
pre-multi-cohort state. Critical event tomorrow — rolling back to
last known stable state.

Reverted commits:
- 7cd390c Multi-cohort support with per-member initial balance (#358)
- 1a9259e Allow sudoed admins higher decimal precision (#370)
- 612f7e7 Add select all / clear buttons to transfer recipient multiselect (#350)
- ec96705 Link cohort members to existing users when added by email (#378)
- eed7a73 Consolidate admin page data loading into single /api/admin/overview (#381)
- eac92d0 Populate global user display name from id_token on login (ARB-515) (#380)
- c5461ee Remove redundant Refresh button from /admin page (#382)
- 77168e3 Sync Kinde admin role into global_user.is_admin (ARB-512) (#379)
- 685ee0c Remove dead get_market_positions and fix 0.5.0 ImportError (#385)
- e9d49f7 Constrain initial balance inputs to numeric values (#383)
- 95ff300 Stop overwriting global_user display_name on admin REST calls (#386)
- 0163100 Show user email on admin page while editing display name (#387)
- 85f2c5f Fix user selection dropdown hover when multiple users have same name (#388)
- 3fedb38 Add admins to cohort member list on access (ARB-510) (#389)
- c5f4008 Fan out display-name rename to every cohort (ARB-513) (#390)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
briansmiley added a commit that referenced this pull request Apr 14, 2026
Reverts commits 7cd390c..c5f4008 (15 commits) to restore the
pre-multi-cohort state. Critical event tomorrow — rolling back to
last known stable state.

Reverted commits:
- 7cd390c Multi-cohort support with per-member initial balance (#358)
- 1a9259e Allow sudoed admins higher decimal precision (#370)
- 612f7e7 Add select all / clear buttons to transfer recipient multiselect (#350)
- ec96705 Link cohort members to existing users when added by email (#378)
- eed7a73 Consolidate admin page data loading into single /api/admin/overview (#381)
- eac92d0 Populate global user display name from id_token on login (ARB-515) (#380)
- c5461ee Remove redundant Refresh button from /admin page (#382)
- 77168e3 Sync Kinde admin role into global_user.is_admin (ARB-512) (#379)
- 685ee0c Remove dead get_market_positions and fix 0.5.0 ImportError (#385)
- e9d49f7 Constrain initial balance inputs to numeric values (#383)
- 95ff300 Stop overwriting global_user display_name on admin REST calls (#386)
- 0163100 Show user email on admin page while editing display name (#387)
- 85f2c5f Fix user selection dropdown hover when multiple users have same name (#388)
- 3fedb38 Add admins to cohort member list on access (ARB-510) (#389)
- c5f4008 Fan out display-name rename to every cohort (ARB-513) (#390)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant